package com.shrct.businessprocess.project;

import com.shrct.businessprocess.project.RCSaleCommissionTotalSettlement;
import com.shrct.businessprocess.project.RCSalesCommissionYearConfig;
import com.shrct.businessprocess.project.impl.RCSalesCommissionYearSettlementImpl;
import com.shrct.businessprocess.project.proxy.RCSalesCommissionYearSettlementProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;

@EntityImplementation(implementBy = RCSalesCommissionYearSettlementImpl.class)
public interface RCSalesCommissionYearSettlement extends IModelObject {
  public abstract RCSaleCommissionTotalSettlement getSettlement();
  
  public abstract RCSalesCommissionYearSettlement setSettlement(final RCSaleCommissionTotalSettlement settlement);
  
  public abstract RCSalesCommissionYearConfig getYearConfig();
  
  public abstract RCSalesCommissionYearSettlement setYearConfig(final RCSalesCommissionYearConfig yearConfig);
  
  public abstract Integer getOnJobMonths();
  
  public abstract Integer getOnJobMonthsTarget();
  
  public abstract Double getSharedCost();
  
  public abstract Double getContractProfit();
  
  public abstract RCSalesCommissionYearSettlement setContractProfit(final Double contractProfit);
  
  public abstract Double getTotalContractProfit();
  
  public abstract RCSalesCommissionYearSettlement setTotalContractProfit(final Double totalContractProfit);
  
  public abstract Double getContractProfitAdj4Sale();
  
  public abstract RCSalesCommissionYearSettlement setContractProfitAdj4Sale(final Double contractProfitAdj4Sale);
  
  public abstract Double getCommisstionTarget();
  
  public abstract Double getCommissionAmountTarget();
  
  public abstract Double getCggp();
  
  public abstract RCSalesCommissionYearSettlement setCggp(final Double cggp);
  
  public abstract Double getCGGP4Commisstion();
  
  public abstract Double getCGGP4CommissionAmount();
  
  public abstract Double getCommissionAmount();
  
  public abstract Double getTotalCost();
  
  public abstract Double getTotalPaidSalary();
  
  public abstract Double getBaseGrossProfitGoal();
  
  public abstract Double getTotalSalaryTarget();
  
  /**
   * K81 本年度预计超额倍数
   */
  public abstract Double getOverflowTimesTarget();
  
  public abstract Double getOverflowTimes();
  
  /**
   * 计算超额奖，采用层级算法
   * 
   * total : 总金额
   * unit :  保底毛利
   */
  public abstract Double calcOverflowCommissionAmount(final Double total, final Double unit);
  
  public abstract Double getOverflowCommissionAmountTarget();
  
  public abstract Double getOverflowCommissionAmount();
  
  /**
   * 团队管理奖
   */
  public abstract Double getTeamPrizeAmount();
  
  public abstract Double getTeamPrizeAmountTarget();
  
  public abstract Double getTotalAmountToPay();
  
  /**
   * 预计佣金合计
   */
  public abstract Double getTotalAmountTarget();
  
  public abstract RCSalesCommissionYearSettlementProxy toProxy();
}
